package com.operation.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.amazonaws.services.simpleemail.model.Message;
import com.common.ChatGrabConstants;
import com.operation.PROJECT_URL;
import com.operation.form.BbsForm;
import com.operation.form.MemberForm;
import com.operation.form.VoteForm;
import com.operation.model.BbsModel;
import com.operation.model.MemberModel;
import com.operation.model.VoteModel;
import com.operation.service.ChatGrabApiService;

//local/mobile/board/usertest/
/**
 * Handles requests for the application home page.
 */
@Controller
@RequestMapping(PROJECT_URL.SERVER + "/chat_grab")
public class ChatGrabApiController extends SuperController {
	@Resource
	private ChatGrabApiService chatGrabApiService;

	/**
	 * @title 게시판 최신글 리스트
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return JSON
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/bbs_list", method = RequestMethod.POST)
	public ModelAndView bbsList(HttpServletRequest request, BbsForm form,
			BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();

		try {
			int pageSet = 10; // 한페이지 줄수
			BbsModel bbsModel = chatGrabApiService.bbsListTotalCount(form); // 게시판 총 개수
			int total = bbsModel.getTotalCount(); // 글수
			int currentPage = form.getCurrentPage();
			if (currentPage == 0) {
				currentPage = 1;
			}
			int limitIdx = (currentPage - 1) * pageSet; // limit시작위치
			form.setStartLimit(limitIdx);
			form.setEndLimit(pageSet);
			if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
				form.setCurrentPage(1); // 현재페이지번호
				form.setTag("기쁨"); // 태그명
				//form.setCode("1"); // 카테고리코드 : 전체-공백, 1-유머, 2-감동, 3-공포, 4-정보
			}
			// currentPage, tag, code, startLimit, endLimit
			List<BbsModel> listBbsModel = chatGrabApiService.bbsList(form); // 게시판 리스트 서비스호출
			for(int i=0; i<listBbsModel.size(); i++){
				BbsForm bbsForm = new BbsForm();
				bbsForm.setTbBbsSeq(listBbsModel.get(i).getBbsSeq()); // 게시판 시컨스
				listBbsModel.get(i).setReplyList(chatGrabApiService.replyList(bbsForm)); // 댓글 리스트 서비스호출
			}
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.addObject("bbsList", listBbsModel);
		} catch (Exception e) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
			mav.addObject("resultServerMsg", e.getMessage()); 
			mav.addObject("bbsList", null);
		} finally {
			mav.setViewName("JSON");
		}
		return mav;

	}
	
	/**
	 * @title 게시판 인기글 리스트
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/bbs_favolite_list", method = RequestMethod.POST)
	public ModelAndView bbsFavoliteList(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		try {
			int pageSet = 10; // 한페이지 줄수
			BbsModel bbsModel = chatGrabApiService.bbsListTotalCount(form); // 게시판 총 개수 서비스호출
			int total = bbsModel.getTotalCount(); // 글수
			int currentPage = form.getCurrentPage();
			if (currentPage == 0) {
				currentPage = 1;
			}
			// int block = currentPage / blockSet; // 현재 블럭(올림)
			int limitIdx = (currentPage - 1) * pageSet; // limit시작위치
			form.setStartLimit(limitIdx);
			form.setEndLimit(pageSet);
			if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
				form.setCurrentPage(1); // 현재페이지번호
				form.setTag("기쁨"); // 태그명
				form.setCode("1"); // 카테고리코드 : 전체-공백, 1-유머, 2-감동, 3-공포, 4-정보
			}
			// currentPage, tag, code, startLimit, endLimit
			List<BbsModel> listBbsModel = chatGrabApiService
					.bbsFavoliteList(form); // 게시판 인기글 리스트 서비스호출
			for(int i=0; i<listBbsModel.size(); i++){
				BbsForm bbsForm = new BbsForm();
				bbsForm.setTbBbsSeq(listBbsModel.get(i).getBbsSeq()); // 게시판 시컨스
				listBbsModel.get(i).setReplyList(chatGrabApiService.replyList(bbsForm)); // 댓글 리스트 서비스호출
			}
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.addObject("bbsList", listBbsModel);
		} catch (Exception e) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
			mav.addObject("resultServerMsg", e.getMessage()); 
			mav.addObject("bbsList", null);
		} finally {
			mav.setViewName("JSON");
		}
		return mav;
	}

	/**
	 * @title 로그인처리
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return JSON
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/login_proc", method = RequestMethod.POST)
	public ModelAndView loginProc(HttpServletRequest request, MemberForm form,
			BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setEmail("test@gmail.com"); // 아이디
			form.setPassword("test@gmail.com"); // 패스워드
		}
		MemberModel m = chatGrabApiService.loginProc(form); // 로그인처리 서비스호출
		int resultCode = 0;
		String resultMessage = "";
		if (m.getCnt() > 0) {
			resultCode = ChatGrabConstants.RESULT_S_CODE; 
			resultMessage = ChatGrabConstants.RESULT_S_MSG; // 해당 건에 대해서 성공 하였습니다.
		} else {
			resultCode = ChatGrabConstants.RESULT_F_CODE;
			resultMessage = ChatGrabConstants.RESULT_F_MSG; // 해당 건에 대해서 실패 하였습니다.
		}
		mav.addObject("resultCode", resultCode);
		mav.addObject("resultMessage", resultMessage);
		mav.setViewName("JSON");
		return mav;

	}

	/**
	 * @title 게시판 좋아요 입력
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/bbs_like_write", method = RequestMethod.POST)
	public ModelAndView bbsLikeWrite(HttpServletRequest request, BbsForm form,
			BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setId("test@gmail.com"); // 아이디
			form.setBbsSeq("1"); // 게시판인덱스
		}

		// 해당글에 대해서 한번이라도 좋아요를 입력 했는지 체크한다.
		BbsModel bbsCntModel = chatGrabApiService.bbsVoteLimit(form); // 게시판 좋아요 / 싫어요 제한 쿼리 서비스호출
		int cnt = bbsCntModel.getCnt();
		if (cnt > 0) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_SEL_MSG + "[" + form.getBbsSeq() + "]" + "[" + form.getId() + "]"); // 이미 선택하였습니다.
			mav.setViewName("JSON");
			return mav;
		} else {
			// 해당 글에 대한 마지막 좋아요 개수를 구한다.
			BbsModel bbsLikeModel = chatGrabApiService.bbsLikeTotalCount(form); // 게시판 좋아요 총 개수 서비스호출
			int bbsLike = bbsLikeModel.getCnt();
			try {
				// 입력한 좋아요에 대한 유저정보를 log로 남김. 차후 좋아요 재입력을 막기위함.
				VoteForm voteForm = new VoteForm();
				voteForm.setId(form.getId()); // 아이디
				voteForm.setTbBbsSeq(form.getBbsSeq()); // 게시판인덱스
				chatGrabApiService.voteWrite(voteForm); // 게시판 추천 입력 서비스호출
				// 해당 글에 대한 좋아요 개수를 업데이트 한다.
				form.setBbsLike(bbsLike+1);
				chatGrabApiService.bbsLikeWrite(form); // 게시판 좋아요 입력 서비스호출
				mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			} catch (Exception e) {
				mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
				mav.addObject("resultServerMsg", e.getMessage()); 
			} finally {
				mav.setViewName("JSON");
			}
		}

		return mav;

	}

	/**
	 * @title 게시판 싫어요 입력
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/bbs_dislike_write", method = RequestMethod.POST)
	public ModelAndView bbsDisLikeWrite(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setId("test@gmail.com"); // 아이디
			form.setBbsSeq("1"); // 게시판인덱스
		}

		// 해당글에 대해서 한번이라도 좋아요를 입력 했는지 체크한다.
		BbsModel bbsCntModel = chatGrabApiService.bbsVoteLimit(form); // 게시판 좋아요 / 싫어요 제한 쿼리 서비스호출
		int cnt = bbsCntModel.getCnt();
		if (cnt > 0) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_SEL_MSG + "[" + form.getBbsSeq() + "]" + "[" + form.getId() + "]"); // 이미 선택하였습니다.
			mav.setViewName("JSON");
			return mav;
		} else {
			// 해당 글에 대한 마지막 좋아요 개수를 구한다.
			BbsModel bbsLikeModel = chatGrabApiService
					.bbsDisLikeTotalCount(form); // 게시판 싫어요 총 개수 서비스호출
			int bbsDislike = bbsLikeModel.getCnt();
			try {
				// 입력한 좋아요에 대한 유저정보를 log로 남김. 차후 좋아요 재입력을 막기위함.
				VoteForm voteForm = new VoteForm();
				voteForm.setId(form.getId());
				voteForm.setTbBbsSeq(form.getBbsSeq());
				chatGrabApiService.voteWrite(voteForm); // 게시판 추천 입력 서비스호출
				// 해당 글에 대한 좋아요 개수를 업데이트 한다.
				form.setBbsDislike(bbsDislike+1);
				chatGrabApiService.bbsDisLikeWrite(form); // 게시판 싫어요 입력 서비스호출
				mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			} catch (Exception e) {
				mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
				mav.addObject("resultServerMsg", e.getMessage()); 
			} finally {
				mav.setViewName("JSON");
			}
		}

		return mav;

	}

	/**
	 * @title 댓글 좋아요 입력
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/reply_like_write", method = RequestMethod.POST)
	public ModelAndView replyLikeWrite(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		VoteForm voteForm = new VoteForm();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setId("test@gmail.com"); // 아이디
			form.setReplySeq("1"); // 댓글인덱스
		} 

		// 해당글에 대해서 한번이라도 좋아요를 입력 했는지 체크한다.
		VoteModel voteModel = chatGrabApiService.replyVoteLimit(voteForm); // 댓글 좋아요 제한 서비스호출
		int cnt = voteModel.getCnt();
		if (cnt > 0) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_SEL_MSG + "[" + form.getReplySeq() + "]" + "[" + form.getId() + "]"); // 이미 선택하였습니다.
			mav.setViewName("JSON");
			return mav;
		} else {
			// 해당 글에 대한 마지막 좋아요 개수를 구한다.
			BbsModel bbsLikeModel = chatGrabApiService
					.replyLikeTotalCount(form); // 댓글 좋아요 총 개수 서비스호출
			int replyLike = bbsLikeModel.getCnt();
			try {
				// 입력한 좋아요에 대한 유저정보를 log로 남김. 차후 좋아요 재입력을 막기위함.
				voteForm = new VoteForm();
				voteForm.setId(form.getId());
				voteForm.setTbBbsSeq(form.getBbsSeq());
				chatGrabApiService.voteWrite(voteForm); // 게시판 추천 입력 서비스호출
				// 해당 글에 대한 좋아요 개수를 업데이트 한다.
				form.setReplyLike(replyLike+1);
				chatGrabApiService.replyLikeWrite(form); // 댓글 좋아요 서비스호출
				mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			} catch (Exception e) {
				mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
				mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
				mav.addObject("resultServerMsg", e.getMessage()); 
			} finally {
				mav.setViewName("JSON");
			}
		}

		return mav;

	}

	/**
	 * @title 회원가입
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/member_insert", method = RequestMethod.POST)
	public ModelAndView memberInsert(HttpServletRequest request,
			MemberForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setTbJoinSeq("1");
		}
		// tbJoinSeq - 1:페이스북, 2:구글, 3:카카오톡, 4:트위터
		// 구분코드 진입에 따라서 가입을 한다.
		// 단, 자체 서비스 가입시에는 해당 로직을 타지 않는다.
		MemberModel memberModel = chatGrabApiService.memberIdCheck(form); // 중복 아이디 존재여부 체크 서비스호출
		int cnt = memberModel.getCnt();
		if (cnt > 0) { // 이미 존재하는 아이디는 빠져 나옴.
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE); // -1
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_ID_MSG); // 이미 존재하는 아이디 입니다.
			mav.setViewName("JSON");
			return mav;
		}

		try {
			if ("1".equals(form.getTbJoinSeq())) { // 이메일가입
				// 이메일인증여부 체크
				// 이메일인증이 됐을경우
				form.setEmailUseYn("Y");
				// 자체 가입 시도시
				chatGrabApiService.memberInsert(form); // 회원가입 / 수정 서비스호출
			} else { // 타서비스를 통한 가입 시도시.
				chatGrabApiService.joinInsert(form); // 가입구분 호출
				chatGrabApiService.memberInsert(form); // 회원가입 / 수정 서비스호출
			}
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
		} catch (Exception e) {
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.
			mav.addObject("resultServerMsg", e.getMessage()); 
		} finally {
			mav.setViewName("JSON");
		}
		return mav;

	}

	/**
	 * @title 중복 아이디 존재여부 체크
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/member_id_check", method = RequestMethod.POST)
	public ModelAndView memberIdCheck(HttpServletRequest request,
			MemberForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setEmail("test@gmail.com");
		}
		MemberModel memberModel = chatGrabApiService.memberIdCheck(form); // 중복 아이디 존재여부 체크 서비스호출
		int cnt = memberModel.getCnt();
		if (cnt > 0) { // 이미 아이디가 존재할 경우
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_ID_MSG + "[" + form.getEmail() + "]"); // 이미 존재하는 아이디 입니다.
			mav.setViewName("JSON");
		} else { // 아이디가 존재하지 않을 경우
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.setViewName("JSON");
		}
		return mav;

	}

	/**
	 * @title 아이디 찾기
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/member_id_find", method = RequestMethod.POST)
	public ModelAndView memberIdFind(HttpServletRequest request,
			MemberForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setEmail("test@gmail.com");
		}
		MemberModel memberModel = chatGrabApiService.memberIdFind(form); // 아이디 찾기 서비스호출

		if(memberModel.getName().isEmpty()){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_ID_FALSE_MSG + "[" + form.getEmail() + "]"); // 존재 하지 않는 아이디 입니다.			
		}else{
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.addObject("id", memberModel.getName());
		}
		mav.setViewName("JSON");
		return mav;

	}
	
	/**
	 * @title 아이디 만들기
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/member_id_make", method = RequestMethod.POST)
	public ModelAndView memberIdMake(HttpServletRequest request,
			MemberForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setEmail("test@gmail.com");
			form.setId("test");
		}
		try{
			// id, email, password
			MemberModel memberModel = chatGrabApiService.memberIdMake(form); // 아이디 만들기 서비스호출
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
		}catch(Exception e){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG);	// 해당 건에 대해서 실패 하였습니다.		
			mav.addObject("resultServerMsg", e.getMessage()); 
		}finally{
			mav.setViewName("JSON");
		}
		mav.setViewName("JSON");
		return mav;

	}
	
	/**
	 * @title 카테고리 리스트
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/cate_list", method = RequestMethod.POST)
	public ModelAndView cateList(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		try{
			List<BbsModel> listBbsModel = chatGrabApiService.cateList(form); // 카테고리 리스트 서비스호출
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.addObject("cateList", listBbsModel);
		}catch(Exception e){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.		
			mav.addObject("resultServerMsg", e.getMessage()); 
		}finally{
			mav.setViewName("JSON");
		}
		return mav;

	}
	
	/**
	 * @title 국가정보 리스트
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@RequestMapping(value = "/nation_list", method = RequestMethod.POST)
	public ModelAndView nationList(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		try{
			List<BbsModel> listBbsModel = chatGrabApiService.nationList(form); // 국가정보 리스트 서비스호출
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
			mav.addObject("nationList", listBbsModel);
		}catch(Exception e){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG); // 해당 건에 대해서 실패 하였습니다.	
			mav.addObject("resultServerMsg", e.getMessage()); 
		}finally{
			mav.setViewName("JSON");
		}
		return mav;

	}
	
	/**
	 * @title 게시판 글올리기
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/bbs_write", method = RequestMethod.POST)
	public ModelAndView bbsWrite(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setWriter("test");
			form.setTitle("안녕하세요 테스트 중입니다.");
			form.setConetents("게시판 내용 테스트 중입니다.");
			form.setTbCategorySeq("1");
			form.setTbFileSeq("1"); 
		}
		try{
			chatGrabApiService.bbsWrite(form); // 게시판 글올리기 서비스호출
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
		}catch(Exception e){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG);	// 해당 건에 대해서 실패 하였습니다.		
			mav.addObject("resultServerMsg", e.getMessage()); 
		}finally{
			mav.setViewName("JSON");
		}
		mav.setViewName("JSON");
		return mav;

	}
	
	/**
	 * @title 댓글 올리기
	 * @param request
	 * @param form
	 * @param errors
	 * @param model
	 * @return
	 */
	@SuppressWarnings("unused")
	@RequestMapping(value = "/reply_write", method = RequestMethod.POST)
	public ModelAndView replyWrite(HttpServletRequest request,
			BbsForm form, BindingResult errors, ModelMap model) {

		ModelAndView mav = new ModelAndView();
		if (ChatGrabConstants.UNIT_TEST_FLAG == 0) {
			form.setWriter("test");
			form.setTitle("안녕하세요 테스트 중입니다.");
			form.setConetents("게시판 내용 테스트 중입니다.");
			form.setTbBbsSeq("1");
			form.setStep("1"); // 1:게시판에 댓글, 2:댓글에 댓글
			form.setSecretYn("Y"); // 비밀글유무
		}
		try{
			chatGrabApiService.replyWrite(form); // 댓글 올리기 서비스호출
			mav.addObject("resultCode", ChatGrabConstants.RESULT_S_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_S_MSG); // 해당 건에 대해서 성공 하였습니다.
		}catch(Exception e){
			mav.addObject("resultCode", ChatGrabConstants.RESULT_F_CODE);
			mav.addObject("resultMessage", ChatGrabConstants.RESULT_F_MSG);	// 해당 건에 대해서 실패 하였습니다.		
			mav.addObject("resultServerMsg", e.getMessage()); 
		}finally{
			mav.setViewName("JSON");
		}
		mav.setViewName("JSON");
		return mav;

	}

}
